import bitcoin

print("欢迎使用罗江涛-比特币抽奖机，欧皇附体，早日暴富")
print("比特币破解程序，随机大量生成私钥和地址，并且匹配比特币富豪钱包地址，如果匹配成功则保存到success.txt中")

# 成功破解后的地址和私钥会保存到这里
file = open(r"./success.txt", "a", encoding='utf-8')
file.close()

# 随机生成比特币地址和私钥
def create_btc_adrees_private_key():
    # 生成一个随机的密钥
    while True:
        # 生成一个用十六进制表示的长 256 位的私钥（str类型）
        private_key = bitcoin.random_key()
        # 解码为十进制的整形密钥
        decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
        if 0 < decoded_private_key < bitcoin.N:
            break

    # 用 WIF 格式编码密钥
    wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
    # print(f'密钥（WIF）：{wif_encoded_private_key} （5 开头，长 51 字符）')

    # 计算公钥坐标 K = k * G
    public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)

    # 计算地址
    # 传入公钥坐标对象/十六进制公钥值，输出同样的地址
    # 传入压缩公钥值，输出与??不同的地址
    adress = bitcoin.pubkey_to_address(public_key)
    # print(f'地址（b58check）：{bitcoin.pubkey_to_address(public_key)} （1 开头）')
    # print(f'地址（b58check）：{adress} （1 开头）')

    return adress,wif_encoded_private_key

# 比特币富豪地址
btc_rich_adress_array=[]

with open('./btc_rich_adress.txt', 'r', encoding='utf-8') as f:
    for line in f:
        btc_rich_adress_array.append(line.strip())


adress_count=len(btc_rich_adress_array)
# print(btc_rich_adress_array)  # 输出整个数组
# print(btc_rich_adress_array[3])  # 输出第一个元素
print(f'读取了btc_rich_adress.txt里{adress_count}个比特币富豪地址')

# 循环次数
i=0
# 成功次数
success_count=0

while True:
    adress,wif_encoded_private_key = create_btc_adrees_private_key()
    # 测试
    # adress="13nxmKxappAw2aP8Sdu5611ri4cjd7sz9D"
    if adress in btc_rich_adress_array:
        print("成功找到地址私钥"+adress)
        file = open(r"./success.txt", "a", encoding='utf-8')
        file.write("地址："+adress+",私钥："+wif_encoded_private_key)
        file.write("\n")
        file.close()
        success_count=success_count+1
        # exit()

    i=i+1
    if i % 10000 == 0 or i==100:
        str=f'已执行{i}个地址和私钥匹配，相当于免费抽了{i*adress_count}次彩票，已中奖{success_count}次'
        str2=f'第{i}次地址：{adress},私钥：{wif_encoded_private_key}'
        print(str)
        print(str2)
        file = open(r"./log.txt", "a", encoding='utf-8')
        file.write(str)
        file.write("\n")
        file.write(str2)
        file.write("\n")
        file.close()
